Various forms of storage systems are used today. These forms include direct attached storage (DAS), network attached storage (NAS) systems, storage area networks (SANs), and others. Storage systems are commonly used for a variety of purposes, such as providing multiple users with access to shared data, backing up data and others.
A storage system typically includes at least a computing system (may also be referred to as a “server” or “storage server”), which is a processing system configured to store and retrieve data on behalf of one or more client computing systems (“clients”). The storage system may be presented to a client system for storing information.
Traditionally, when a client system intends to copy data from a source storage location to a destination storage location, the storage system retrieves the data, provides the data to the client system, the client system saves the data at a memory location and then data is transferred to the destination storage location. The source and the destination storage locations may be within a same storage device.
The traditional client centric copy approach described above has shortcomings because it consumes processing resources as well as network bandwidth. To alleviate the shortcomings of the traditional approach, a “copy-offload” process is now used to copy information directly between the source and destination locations without having to send the actual information to the client.
The following process steps are typically used to copy a source data container from a source location to a destination location, using a copy-offload operation: (a) The source data container is first opened at a first server. (b) A token that represents information of the source data container is generated and provided to the client. (c) The client then sends a copy-offload write request and provides the token. (d) A destination data container is opened and then using the token, the destination is instructed to copy the data from the source location.
One conventional method for performing a copy-offload operation takes a point in time copy (or snapshot) of the data container during token creation. The point in time copy is a part of an intermediate staging file called the “pit file”. The pit file represents data that won't change as long as the token is valid. Creating the token by taking the snapshot is undesirable since it uses processing time and may limit a size of the token. Continuous efforts are being made to efficiently perform copy-offload operations, preferably without taking a point in time copy of the data container that is being copied.